--======================================================================--
local 游戏活动类 = class()

function 游戏活动类:初始化()end
function 游戏活动类:科举条件检测(连接id,id)
  if 科举数据[id]~=nil and 科举数据[id].次数>=2 then
    常规提示(id,"你本日可参加科举活动的次数已经耗尽，请明日再来吧")
    return
  elseif 取等级(id)<30 then
    常规提示(id,"只有等级达到30级的玩家才可参加科举活动")
    return
  end
  if 科举数据[id]==nil then
    科举数据[id]={次数=0}
  end
  任务处理类:设置科举任务(id)
  科举数据[id].次数=科举数据[id].次数+1
  科举数据[id].天王令=1
  科举数据[id].地王令=2
  科举数据[id].鬼王令=3
  科举数据[id].答对=0
  科举数据[id].答错=0
  科举数据[id].总数=0
  科举数据[id].连对=0
  科举数据[id].起始=os.time()
  self:设置科举题目(连接id,id)
end

function 游戏活动类:设置科举题目(连接id,id)
  local 序列=取随机数(1,#科举题库)
  local 正确答案=科举题库[序列][4]
  local 随机答案={}
  for n=2,4 do
    随机答案[n-1]={答案=科举题库[序列][n],序列=取随机数(1,9999)}
  end
  table.sort(随机答案,function(a,b) return a.序列>b.序列 end )
  local 显示答案={}
  for n=1,3 do
    显示答案[n]=随机答案[n].答案
  end
  显示答案[#显示答案+1]="使用法宝"
  玩家数据[id].科举数据={题目=科举题库[序列][1],答案=显示答案,正确答案=正确答案}
  玩家数据[id].科举对话=true
  科举数据[id].计时=os.time()
  科举数据[id].总数=科举数据[id].总数+1
  发送数据(连接id,1501,{名称="礼部侍郎",模型="考官2",对话=format("#Y/第%s题：#W/%s",科举数据[id].总数, 玩家数据[id].科举数据.题目),选项= 玩家数据[id].科举数据.答案})
end

function 游戏活动类:科举回答题目(连接id,id,答案,类型) --1天王令 2 帝王令 3使用鬼王令 4鬼王令成功 5 鬼王令失败 6超时
	-- print(连接id,id,答案,类型,玩家数据[id].科举数据.法宝使用)
  if 答案=="使用法宝" then --发送法宝界面
    玩家数据[id].科举数据.题目="请选择你要使用的法宝："
    玩家数据[id].科举数据.答案={}
    玩家数据[id].科举数据.答案[1]="天王令(得到正确作答，还可用"..科举数据[id].天王令.."次)"
    玩家数据[id].科举数据.答案[2]="地王令(系统作答，正确率50%,还可用"..科举数据[id].地王令.."次)"
    玩家数据[id].科举数据.答案[3]="鬼王令(战斗闯关，还可用"..科举数据[id].鬼王令.."次)"
    发送数据(连接id,1501,{名称="礼部侍郎",模型="考官2",对话=玩家数据[id].科举数据.题目,选项= 玩家数据[id].科举数据.答案})
    玩家数据[id].科举数据.法宝使用=true
    return
  end
  if 玩家数据[id].科举数据.法宝使用 then
    local 法宝序列=0
    for n=1,3 do
      if 答案==玩家数据[id].科举数据.答案[n] then
        法宝序列=n
      end
    end
    if 法宝序列==0 then
      常规提示(id,"#Y/你没有这样的法宝")
      类型=9
    elseif 法宝序列==1 and 科举数据[id].天王令<=0 then
      常规提示(id,"#Y/你的这种法宝可用次数已经耗尽")
      类型=9
    elseif 法宝序列==2 and 科举数据[id].地王令<=0 then
      常规提示(id,"#Y/你的这种法宝可用次数已经耗尽")
      类型=9
    elseif 法宝序列==3 and 科举数据[id].鬼王令<=0 then
      常规提示(id,"#Y/你的这种法宝可用次数已经耗尽")
      类型=9
    else
      类型=法宝序列
      if 类型==3 then
        科举数据[id].鬼王令=科举数据[id].鬼王令-1
        常规提示(id,"#Y/你使用了鬼王令")
        玩家数据[id].科举数据.法宝使用=nil
        战斗准备类:创建战斗(id,100006,0)
        return
      end
    end
  end
  玩家数据[id].科举数据.法宝使用=nil
  local 正确=false
  玩家数据[id].科举对话=nil
  if 玩家数据[id].角色:取任务(7)==0 and 类型==nil then
    常规提示(id,"#Y/你没有这样的任务")
    return
  end
  if 类型==nil then --正常作答
    if os.time()-科举数据[id].计时<=15 then
      if 答案==玩家数据[id].科举数据.正确答案 then
        正确=true
      end
    else
      常规提示(id,"#Y/答题超时！")
    end
  elseif 类型==1 then
    正确=true
    科举数据[id].天王令=科举数据[id].天王令-1
    常规提示(id,"#Y/你使用了天王令")
  elseif 类型==2 then
    if 取随机数()<=50 then 正确=true  end
    科举数据[id].地王令=科举数据[id].地王令-1
    常规提示(id,"#Y/你使用了地王令")
  elseif 类型==4 then
    正确=true
  end
  if 正确 then
    科举数据[id].答对=科举数据[id].答对+1
    科举数据[id].连对= 科举数据[id].连对+1
    if 科举数据[id].连对>=3 then
      科举数据[id].连对=0
      科举数据[id].鬼王令=科举数据[id].鬼王令+1
      常规提示(id,"#Y/连续答对三道题#R/鬼王令+1")
    end
    local 等级=取等级(id)
    local 经验=等级*240
    local 银子=等级*50+5000
    玩家数据[id].角色:添加经验(经验,"科举活动",1)
    玩家数据[id].角色:添加银子(银子,"科举活动",1)
    local 奖励参数=取随机数(1,100)
    if 类型~=nil then
      奖励参数=0
    end
    if 奖励参数<=20 then
      玩家数据[id].道具:给予道具(id,"藏宝图",0)
      常规提示(id,"#Y/你获得了一张藏宝图")
    elseif 奖励参数<=30 then
      local 名称=取强化石()
      玩家数据[id].道具:给予道具(id,名称,1)
      常规提示(id,"#Y/你获得了"..名称)
      广播消息({内容=format("#S(科举活动)#R/%s#Y在科举活动中如有神助，妙笔生花，获得了考官奖励的#G/%s",玩家数据[id].角色.数据.名称,名称),频道="xt"})
    elseif 奖励参数<=40 then
      local 名称=取宝石()
      玩家数据[id].道具:给予道具(id,名称,1)
      常规提示(id,"#Y/你获得了"..名称)
      广播消息({内容=format("#S(科举活动)#R/%s#Y在科举活动中如有神助，妙笔生花，获得了考官奖励的#G/%s",玩家数据[id].角色.数据.名称,名称),频道="xt"})
    elseif 奖励参数<=50 then
      local 名称="金柳露"
      玩家数据[id].道具:给予道具(id,名称,1)
      常规提示(id,"#Y/你获得了"..名称)
      广播消息({内容=format("#S(科举活动)#R/%s#Y在科举活动中如有神助，妙笔生花，获得了考官奖励的#G/%s",玩家数据[id].角色.数据.名称,名称),频道="xt"})
    elseif 奖励参数<=60 then
      local 名称="金银锦盒"
      玩家数据[id].道具:给予道具(id,名称,1)
      常规提示(id,"#Y/你获得了"..名称)
      广播消息({内容=format("#S(科举活动)#R/%s#Y在科举活动中如有神助，妙笔生花，获得了考官奖励的#G/%s",玩家数据[id].角色.数据.名称,名称),频道="xt"})
    end
  else
    科举数据[id].答错=科举数据[id].答错+1
    科举数据[id].连对=0
    常规提示(id,"#Y/你的回答不正确")
  end
  if 科举数据[id].总数>=20 then
    科举数据[id].耗时=os.time()- 科举数据[id].起始
    if 科举数据[id].答对>=15 then
      local 等级=取等级(id)
      local 经验=等级*240*科举数据[id].答对
      local 储备=等级*100*科举数据[id].答对
      玩家数据[id].角色:添加经验(经验,"科举活动最终奖励",1)
      玩家数据[id].角色:添加储备(储备,"科举活动最终精灵",1)
      local 名称="魔兽要诀"
      玩家数据[id].道具:给予道具(id,名称,1)
      常规提示(id,"#Y/你获得了"..名称)
      广播消息({内容=format("#S(科举活动)#R/%s#Y在科举活动的表现突出，仅用#W/%s#Y秒的时间就正确作答#W/%s#Y/道题目，因此获得了考官特别奖励的#G/%s",玩家数据[id].角色.数据.名称,科举数据[id].耗时,科举数据[id].答对,名称),频道="xt"})
    end
    玩家数据[id].角色:取消任务(玩家数据[id].角色:取任务(7))
    常规提示(id,"#Y/恭喜你成功完成了本轮科举活动")
    玩家数据[id].科举数据=nil
    if 活跃数据[id]==nil then
      活跃数据[id]={活跃度=0,领取100活跃=false,领取200活跃=false,领取300活跃=false,领取400活跃=false,领取500活跃=false,师门次数=20,官职次数=30,鬼怪次数=25,封妖次数=3,游泳次数=1,镖王次数=1,押镖次数=50,水果次数=25,天庭叛逆次数=25,十二星宿次数=5,门派闯关次数=1,地煞星次数=5,天罡星次数=5,飞贼次数=5,知了先锋=20,小知了王=20,知了王=10,世界BOSS次数=2,抓鬼次数=50,初出江湖次数=20,帮派青龙次数=100,帮派玄武次数=100,妖王次数=3}
    end
    活跃数据[id].活跃度=活跃数据[id].活跃度+50
    玩家数据[id].角色.数据.累积活跃.当前积分=玩家数据[id].角色.数据.累积活跃.当前积分+活跃数据[id].活跃度
    玩家数据[id].角色.数据.累积活跃.总积分=玩家数据[id].角色.数据.累积活跃.总积分+活跃数据[id].活跃度
  elseif 科举数据[id].答错>=10 then
    玩家数据[id].角色:取消任务(玩家数据[id].角色:取任务(7))
    常规提示(id,"#Y/你当前累积错误题目数量已达10道，已经无法参加后续的活动了")
    玩家数据[id].科举数据=nil
    if 活跃数据[id]==nil then
      活跃数据[id]={活跃度=0,领取100活跃=false,领取200活跃=false,领取300活跃=false,领取400活跃=false,领取500活跃=false,师门次数=20,官职次数=30,鬼怪次数=25,封妖次数=3,游泳次数=1,镖王次数=1,押镖次数=50,水果次数=25,天庭叛逆次数=25,十二星宿次数=5,门派闯关次数=1,地煞星次数=5,天罡星次数=5,飞贼次数=5,知了先锋=20,小知了王=20,知了王=10,世界BOSS次数=2,抓鬼次数=50,初出江湖次数=20,帮派青龙次数=100,帮派玄武次数=100,妖王次数=3}
    end
    活跃数据[id].活跃度=活跃数据[id].活跃度+50
    玩家数据[id].角色.数据.累积活跃.当前积分=玩家数据[id].角色.数据.累积活跃.当前积分+活跃数据[id].活跃度
    玩家数据[id].角色.数据.累积活跃.总积分=玩家数据[id].角色.数据.累积活跃.总积分+活跃数据[id].活跃度
  else
    self:设置科举题目(连接id,id)
  end
end

function 游戏活动类:比武大会战斗处理(胜利id,失败id)
  --计算胜利id
  local 分组 = ""
  if 玩家数据[失败id].队伍==0 then
    self.战胜人数=1
    分组 = 取比武分组(玩家数据[失败id].角色.数据.等级)
    比武大会数据[分组][失败id].奖励=true
    玩家数据[失败id].战斗=0
    玩家数据[失败id].角色.数据.比武积分.当前积分=玩家数据[失败id].角色.数据.比武积分.当前积分+3
    玩家数据[失败id].角色.数据.比武积分.总积分=玩家数据[失败id].角色.数据.比武积分.总积分+3
    常规提示(失败id,"等待比武结束后可在比武大会主持人处领取奖励")
    地图处理类:跳转地图(失败id,1001,124,174)
  else
    self.战胜人数=#队伍数据[玩家数据[失败id].队伍].成员数据
    for n=1,#队伍数据[玩家数据[失败id].队伍].成员数据 do
      if 队伍处理类:取是否助战(玩家数据[失败id].队伍,n) == 0 then
        local 失败组id = 队伍数据[玩家数据[失败id].队伍].成员数据[n]
        分组 = 取比武分组(玩家数据[失败组id].角色.数据.等级)
        比武大会数据[分组][失败组id].奖励=true
        玩家数据[失败组id].战斗=0
        玩家数据[失败组id].角色.数据.比武积分.当前积分=玩家数据[失败组id].角色.数据.比武积分.当前积分+3
        玩家数据[失败组id].角色.数据.比武积分.总积分=玩家数据[失败组id].角色.数据.比武积分.总积分+3
        常规提示(失败组id,"等待比武结束后可在比武大会主持人处领取奖励")
        地图处理类:跳转地图(失败组id,1001,124,174)
      end
    end
  end
  --胜利
  self.添加积分=self.战胜人数*5
  if 玩家数据[胜利id].队伍==0 then
    分组 = 取比武分组(玩家数据[胜利id].角色.数据.等级)
    比武大会数据[分组][胜利id].奖励=true
    比武大会数据[分组][胜利id].连胜次数=比武大会数据[分组][胜利id].连胜次数+1
    if 比武大会数据[分组][胜利id].连胜次数==5 then
      self.添加积分=self.添加积分+5
      发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在英雄大会中初获五连斩！！！")
    elseif 比武大会数据[分组][胜利id].连胜次数==10 then
      self.添加积分=self.添加积分+10
      发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在英雄大会中十步杀一人，已获十连斩！！！")
    elseif 比武大会数据[分组][胜利id].连胜次数==20 then
      self.添加积分=self.添加积分+20
      发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在英雄大会中杀人如麻，已获二十连斩！！！")
    elseif 比武大会数据[分组][胜利id].连胜次数==30 then
      self.添加积分=self.添加积分+30
      发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在英雄大会中遇神杀神、遇魔杀魔，已获三十连战斩！！！")
    end
    比武大会数据[分组][胜利id].积分=比武大会数据[分组][胜利id].积分+self.添加积分
    玩家数据[胜利id].角色.数据.比武积分.当前积分=玩家数据[胜利id].角色.数据.比武积分.当前积分+self.添加积分
    玩家数据[胜利id].角色.数据.比武积分.总积分=玩家数据[胜利id].角色.数据.比武积分.总积分+self.添加积分
    if 老唐定制 then
      添加仙玉(2000,玩家数据[胜利id].账号,胜利id,"比武战胜玩家")
    end
    玩家数据[胜利id].比武保护期=os.time()
    常规提示(胜利id,"你获得了"..self.添加积分.."点比武积分，当前总积分"..比武大会数据[分组][胜利id].积分.."点")
  else
    for n=1,#队伍数据[玩家数据[胜利id].队伍].成员数据 do
      if 队伍处理类:取是否助战(玩家数据[胜利id].队伍,n) == 0 then
        local 胜利组id = 队伍数据[玩家数据[胜利id].队伍].成员数据[n]
        分组 = 取比武分组(玩家数据[胜利组id].角色.数据.等级)
        比武大会数据[分组][胜利组id].奖励=true
        比武大会数据[分组][胜利组id].连胜次数=比武大会数据[分组][胜利组id].连胜次数+1
        if 比武大会数据[分组][胜利组id].连胜次数==5 then
          self.添加积分=self.添加积分+5
          发送公告("#G无人可挡，玩家#R"..玩家数据[胜利组id].角色.数据.名称.."#G在英雄大会中初获五连斩！！！")
        elseif 比武大会数据[分组][胜利组id].连胜次数==10 then
          self.添加积分=self.添加积分+10
          发送公告("#G无人可挡，玩家#R"..玩家数据[胜利组id].角色.数据.名称.."#G在英雄大会中十步杀一人，已获十连斩！！！")
        elseif 比武大会数据[分组][胜利组id].连胜次数==20 then
          self.添加积分=self.添加积分+20
          发送公告("#G无人可挡，玩家#R"..玩家数据[胜利组id].角色.数据.名称.."#G在英雄大会中杀人如麻，已获二十连斩！！！")
        elseif 比武大会数据[分组][胜利组id].连胜次数==30 then
          self.添加积分=self.添加积分+30
          发送公告("#G无人可挡，玩家#R"..玩家数据[胜利组id].角色.数据.名称.."#G在英雄大会中遇神杀神、遇魔杀魔，已获三十连战斩！！！")
        end
        比武大会数据[分组][胜利组id].积分=比武大会数据[分组][胜利组id].积分+self.添加积分
        玩家数据[胜利组id].角色.数据.比武积分.当前积分=玩家数据[胜利组id].角色.数据.比武积分.当前积分+self.添加积分
        玩家数据[胜利组id].角色.数据.比武积分.总积分=玩家数据[胜利组id].角色.数据.比武积分.总积分+self.添加积分
        if 老唐定制 then
          添加仙玉(2000,玩家数据[胜利组id].账号,胜利组id,"比武战胜玩家")
        end
        玩家数据[胜利组id].比武保护期=os.time()
        常规提示(胜利组id,"你获得了"..self.添加积分.."点比武积分,当前总积分"..比武大会数据[分组][胜利组id].积分.."点")
      end
    end
  end
end

function 游戏活动类:首席争霸战斗处理(胜利id,失败id)
  --失败
  local 门派=""
  self.战胜人数=1
  门派=玩家数据[失败id].角色.数据.门派
  首席争霸数据[门派][失败id].奖励=true
  玩家数据[失败id].战斗=0
  常规提示(失败id,"等待首席争霸结束后可在首席争霸使者处领取奖励")
  地图处理类:跳转地图(失败id,1001,313,85)
  --胜利
  self.添加积分=self.战胜人数*5
  门派=玩家数据[胜利id].角色.数据.门派
  首席争霸数据[门派][胜利id].奖励=true
  首席争霸数据[门派][胜利id].连胜次数=首席争霸数据[门派][胜利id].连胜次数+1
  if 首席争霸数据[门派][胜利id].连胜次数==5 then
    self.添加积分=self.添加积分+5
    发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在首席争霸赛中初获五连斩！！！")
  elseif 首席争霸数据[门派][胜利id].连胜次数==10 then
    self.添加积分=self.添加积分+10
    发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在首席争霸赛中十步杀一人，已获十连斩！！！")
  elseif 首席争霸数据[门派][胜利id].连胜次数==20 then
    self.添加积分=self.添加积分+20
    发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在首席争霸赛中杀人如麻，已获二十连斩！！！")
  elseif 首席争霸数据[门派][胜利id].连胜次数==30 then
    self.添加积分=self.添加积分+30
    发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在首席争霸赛中遇神杀神、遇魔杀魔，已获三十连战斩！！！")
  end
  首席争霸数据[门派][胜利id].积分=首席争霸数据[门派][胜利id].积分+self.添加积分
  常规提示(胜利id,"你获得了"..self.添加积分.."点首席争霸积分，当前总积分"..首席争霸数据[门派][胜利id].积分.."点")
end

function 游戏活动类:帮派竞赛处理(胜利id,失败id)
  local 编号 = 0
  --计算胜利id
  if 玩家数据[失败id].队伍==0 then
    self.战胜人数=1
    编号=玩家数据[失败id].角色.数据.帮派数据.编号
    帮派竞赛数据[编号][失败id].体力=帮派竞赛数据[编号][失败id].体力-50
    if 玩家数据[失败id].角色.数据.帮战夺旗次数==1 then
      玩家数据[失败id].角色.数据.帮战夺旗次数=nil
      常规提示(失败id,"因战斗失利，你失去了刚夺取的帮派战旗！！！")
    end
    玩家数据[失败id].帮派竞赛保护期=os.time()
    if 帮派竞赛数据[编号][失败id].体力<=0 then
      帮派竞赛数据[编号][失败id].奖励=true
      玩家数据[失败id].战斗=0
      常规提示(失败id,"等待帮派竞赛结束后可在帮派竞赛主持人处领取奖励")
      地图处理类:跳转地图(失败id,1001,333,182)
      for i=1,#帮派竞赛 do
        if 帮派竞赛[i].编号==玩家数据[失败id].角色.数据.帮派数据.编号 then
          编号=i
        end
      end
      帮派竞赛[编号].参战人数=帮派竞赛[编号].参战人数-1
      if 帮派竞赛[编号].参战人数<=0 then
        if 帮派竞赛[编号+1]~=nil and 帮派竞赛[编号].分组==帮派竞赛[编号+1].分组 then
          帮派竞赛[编号+1].胜负=true
          帮派竞赛[编号].结束=true
          帮派竞赛[编号+1].结束=true
          if 编号==1 then
            帮战胜利地图1=6011
          elseif 编号==3 then
            帮战胜利地图2=6013
          elseif 编号==5 then
            帮战胜利地图3=6015
          elseif 编号==7 then
            帮战胜利地图4=6017
          elseif 编号==9 then
            帮战胜利地图5=6019
          end
        elseif 帮派竞赛[编号-1]~=nil and 帮派竞赛[编号].分组==帮派竞赛[编号-1].分组 then
          帮派竞赛[编号-1].胜负=true
          帮派竞赛[编号].结束=true
          帮派竞赛[编号-1].结束=true
          if 编号==2 then
            帮战胜利地图1=6010
          elseif 编号==4 then
            帮战胜利地图2=6012
          elseif 编号==6 then
            帮战胜利地图3=6014
          elseif 编号==8 then
            帮战胜利地图4=6016
          elseif 编号==10 then
            帮战胜利地图5=6018
          end
        end
        结束帮派竞赛()
      end
    end
  else
    self.战胜人数=#队伍数据[玩家数据[失败id].队伍].成员数据
    for n=1,#队伍数据[玩家数据[失败id].队伍].成员数据 do
      if 队伍处理类:取是否助战(玩家数据[失败id].队伍,n) == 0 then
        local 失败组id = 队伍数据[玩家数据[失败id].队伍].成员数据[n]
        编号=玩家数据[失败组id].角色.数据.帮派数据.编号
        帮派竞赛数据[编号][失败组id].体力=帮派竞赛数据[编号][失败组id].体力-50
        if 玩家数据[失败组id].角色.数据.帮战夺旗次数==1 then
            玩家数据[失败组id].角色.数据.帮战夺旗次数=nil
            常规提示(失败组id,"因战斗失利，你失去了刚夺取的帮派战旗！！！")
        end
        玩家数据[失败组id].帮派竞赛保护期=os.time()
        if 帮派竞赛数据[编号][失败组id].体力<=0 then
          帮派竞赛数据[编号][失败组id].奖励=true
          玩家数据[失败组id].战斗=0
          常规提示(失败组id,"等待帮派竞赛结束后可在帮派竞赛主持人处领取奖励")
          地图处理类:跳转地图(失败组id,1001,333,182)
          for i=1,#帮派竞赛 do
            if 帮派竞赛[i].编号==玩家数据[失败组id].角色.数据.帮派数据.编号 then
              编号=i
            end
          end
          帮派竞赛[编号].参战人数=帮派竞赛[编号].参战人数-1
          if 帮派竞赛[编号].参战人数<=0 then
            if 帮派竞赛[编号+1]~=nil and 帮派竞赛[编号].分组==帮派竞赛[编号+1].分组 then
              帮派竞赛[编号+1].胜负=true
              帮派竞赛[编号+1].结束=true
              帮派竞赛[编号].结束=true
            elseif 帮派竞赛[编号-1]~=nil and 帮派竞赛[编号].分组==帮派竞赛[编号-1].分组 then
              帮派竞赛[编号-1].胜负=true
              帮派竞赛[编号-1].结束=true
              帮派竞赛[编号].结束=true
            end
            结束帮派竞赛()
          end
        end
      end
    end
  end
  --胜利
  self.添加积分=self.战胜人数*5
  if 玩家数据[胜利id].队伍==0 then
    编号=玩家数据[胜利id].角色.数据.帮派数据.编号
    帮派竞赛数据[编号][胜利id].奖励=true
    帮派竞赛数据[编号][胜利id].连胜次数=帮派竞赛数据[编号][胜利id].连胜次数+1
    if 帮派竞赛数据[编号][胜利id].连胜次数==5 then
      self.添加积分=self.添加积分+5
      发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在帮派竞赛中初获五连斩！！！")
    elseif 帮派竞赛数据[编号][胜利id].连胜次数==10 then
      self.添加积分=self.添加积分+10
      发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在帮派竞赛中十步杀一人，已获十连斩！！！")
    elseif 帮派竞赛数据[编号][胜利id].连胜次数==20 then
      self.添加积分=self.添加积分+20
      发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在帮派竞赛中杀人如麻，已获二十连斩！！！")
    elseif 帮派竞赛数据[编号][胜利id].连胜次数==30 then
      self.添加积分=self.添加积分+30
      发送公告("#G无人可挡，玩家#R"..玩家数据[胜利id].角色.数据.名称.."#G在帮派竞赛中遇神杀神、遇魔杀魔，已获三十连战斩！！！")
    end
    帮派竞赛数据[编号][胜利id].积分=帮派竞赛数据[编号][胜利id].积分+self.添加积分
    常规提示(胜利id,"你获得了"..self.添加积分.."点帮战积分，当前总积分"..帮派竞赛数据[编号][胜利id].积分.."点")
    for i=1,#帮派竞赛 do
      if 帮派竞赛[i].编号==玩家数据[胜利id].角色.数据.帮派数据.编号 then
        编号=i
      end
    end
    帮派竞赛[编号].积分=帮派竞赛[编号].积分+self.添加积分
  else
    for n=1,#队伍数据[玩家数据[胜利id].队伍].成员数据 do
      if 队伍处理类:取是否助战(玩家数据[胜利id].队伍,n) == 0 then
        local 胜利组id = 队伍数据[玩家数据[胜利id].队伍].成员数据[n]
        编号=玩家数据[胜利组id].角色.数据.帮派数据.编号
        帮派竞赛数据[编号][胜利组id].奖励=true
        帮派竞赛数据[编号][胜利组id].连胜次数=帮派竞赛数据[编号][胜利组id].连胜次数+1
        if 帮派竞赛数据[编号][胜利组id].连胜次数==5 then
          self.添加积分=self.添加积分+5
          发送公告("#G无人可挡，玩家#R"..玩家数据[胜利组id].角色.数据.名称.."#G在帮派竞赛中初获五连斩！！！")
        elseif 帮派竞赛数据[编号][胜利组id].连胜次数==10 then
          self.添加积分=self.添加积分+10
          发送公告("#G无人可挡，玩家#R"..玩家数据[胜利组id].角色.数据.名称.."#G在帮派竞赛中十步杀一人，已获十连斩！！！")
        elseif 帮派竞赛数据[编号][胜利组id].连胜次数==20 then
          self.添加积分=self.添加积分+20
          发送公告("#G无人可挡，玩家#R"..玩家数据[胜利组id].角色.数据.名称.."#G在帮派竞赛中杀人如麻，已获二十连斩！！！")
        elseif 帮派竞赛数据[编号][胜利组id].连胜次数==30 then
          self.添加积分=self.添加积分+30
          发送公告("#G无人可挡，玩家#R"..玩家数据[胜利组id].角色.数据.名称.."#G在帮派竞赛中遇神杀神、遇魔杀魔，已获三十连战斩！！！")
        end
        帮派竞赛数据[编号][胜利组id].积分=帮派竞赛数据[编号][胜利组id].积分+self.添加积分
        常规提示(胜利组id,"你获得了"..self.添加积分.."点帮战积分,当前总积分"..帮派竞赛数据[编号][胜利组id].积分.."点")
        for i=1,#帮派竞赛 do
          if 帮派竞赛[i].编号==玩家数据[胜利组id].角色.数据.帮派数据.编号 then
            编号=i
          end
        end
        帮派竞赛[编号].积分=帮派竞赛[编号].积分+self.添加积分
      end
    end
  end
end

function 游戏活动类:车迟回答题目(id,答案,任务id)
  local 正确=false
  玩家数据[id].车迟对话=nil
  if 玩家数据[id].角色:取任务(130)==0 then
    常规提示(id,"#Y/你没有这样的任务")
    return
  end
  if 答案==玩家数据[id].车迟数据.正确答案 then
    正确=true
  end
  if 正确 then
    玩家数据[id].道具:给予道具(id,"普通木材",1)
    地图处理类:删除单位(任务数据[任务id].地图编号,任务数据[任务id].单位编号)
    常规提示(id,"#Y/你获得了一个木材")
    任务数据[任务id]=nil
  end
end

function 游戏活动类:通天回答题目(id,答案,任务id)
  local 正确=false
  玩家数据[id].通天对话=nil
  if 玩家数据[id].角色:取任务(160)==0 then
    常规提示(id,"#Y/你没有这样的任务")
    return
  end
  if 答案==玩家数据[id].通天数据.正确答案 then
    正确=true
  end
  if 正确 then
    地图处理类:删除单位(任务数据[任务id].地图编号,任务数据[任务id].单位编号)
    local 副本id = 任务数据[玩家数据[id].角色:取任务(160)].副本id
    副本数据.通天河.进行[副本id].通天答题=副本数据.通天河.进行[副本id].通天答题+1
    常规提示(id,"#Y/不错不错，答对了")
    任务数据[任务id]=nil
    if 副本数据.通天河.进行[副本id].通天答题>=10 then
      副本数据.通天河.进行[副本id].进程=2
      任务处理类:设置通天河副本(副本id)
    end
    玩家数据[id].角色:刷新任务跟踪()
  end
end

function 游戏活动类:炼丹更新()
  if 炼丹炉.时间 <= 0 then
    self.开奖数据 = self:炼丹开奖中()
  end
  炼丹炉.时间 = 炼丹炉.时间 - 1
  if 炼丹炉.时间 == 121 then
    self:炼丹开奖(self.开奖数据)
  end
  for i,v in pairs(炼丹查看) do
    if 玩家数据[i] ~= nil and 炼丹炉.时间 ~= nil then
      发送数据(玩家数据[i].连接id,109,炼丹炉.时间)
    else
      炼丹查看[i] = nil
    end
  end
end

function 游戏活动类:炼丹开奖中()
  local 八卦 = {"乾","巽","坎","艮","坤","震","离","兑"}
  local 开奖 = {吉位=八卦[取随机数(1,#八卦)]}
  开奖.八卦位 = 八卦[取随机数(1,#八卦)]
  if 开奖.八卦位 == 开奖.吉位 then
    开奖.八卦位 = 八卦[取随机数(1,#八卦)]
  end
  for i,v in pairs(炼丹查看) do
    if 玩家数据[i] ~= nil then
      发送数据(玩家数据[i].连接id,108.2,{吉位=开奖.吉位,八卦位=开奖.八卦位})
    else
      炼丹查看[i] = nil
    end
  end
  炼丹炉.时间 = 130
  return 开奖
end

function 游戏活动类:炼丹开奖(开奖)
  广播消息({内容="#S(八卦炼丹)#Y本次八卦炉炼丹结束,本次炼丹吉位为:#G"..开奖.吉位.." #Y本次炼丹八卦位为:#G"..开奖.八卦位,频道="hd"})
  for i,v in pairs(炼丹炉) do
    if i ~= "时间" then
      if 炼丹炉[i][开奖.吉位] ~= nil and 炼丹炉[i][开奖.八卦位] ~= nil and 开奖.吉位==开奖.八卦位 then
        local 奖励数据 = {}
        奖励数据[1],奖励数据[2],奖励数据[3] = self:取奖励(炼丹炉[i][开奖.吉位])
        if 玩家数据[i] ~= nil then
          if 奖励数据[1] > 0 then
            玩家数据[i].道具:给予道具(i,"金砂丹",奖励数据[1])
          end
          if 奖励数据[2] > 0 then
            玩家数据[i].道具:给予道具(i,"银砂丹",奖励数据[2])
          end
          if 奖励数据[3] > 0 then
            玩家数据[i].道具:给予道具(i,"铜砂丹",奖励数据[3])
          end
          常规提示(i,"#Y/恭喜你在炼丹中中得吉位和八卦位！")
          广播消息({内容=string.format("#S(八卦炼丹)#Y恭喜:#G%s#Y在本次炼丹中幸运的猜中吉位以及八卦位获得了:#G%s颗#Y金丹 #G%s颗#Y银丹 #G%s颗#Y铜丹",玩家数据[i].角色.数据.名称,奖励数据[1],奖励数据[2],奖励数据[3]),频道="hd"})
        else
          if 商品存放[i] == nil then
            商品存放[i] = {[1]=奖励数据[1],[2]=奖励数据[2],[3]=奖励数据[3]}
          else
            商品存放[i] = {}
            商品存放[i][1] = 商品存放[i][1] + 奖励数据[1]
            商品存放[i][2] = 商品存放[i][2] + 奖励数据[2]
            商品存放[i][3] = 商品存放[i][3] + 奖励数据[3]
          end
        end
      elseif 炼丹炉[i][开奖.吉位] ~= nil then
        local 奖励数据 = {}
        奖励数据[1],奖励数据[2],奖励数据[3] = self:取奖励(炼丹炉[i][开奖.吉位]/2)
        奖励数据[1] = math.floor(奖励数据[1])
        奖励数据[2] = math.floor(奖励数据[2])
        奖励数据[3] = math.floor(奖励数据[3])
        if 玩家数据[i] ~= nil then
          if 奖励数据[1] > 0 then
            玩家数据[i].道具:给予道具(i,"金砂丹",奖励数据[1])
          end
          if 奖励数据[2] > 0 then
            玩家数据[i].道具:给予道具(i,"银砂丹",奖励数据[2])
          end
          if 奖励数据[3] > 0 then
            玩家数据[i].道具:给予道具(i,"铜砂丹",奖励数据[3])
          end
          常规提示(i,"#Y/恭喜你在炼丹中中得吉位！")
          广播消息({内容=string.format("#S(八卦炼丹)#Y恭喜:#G%s#Y在本次炼丹中幸运的猜中吉位获得了:#G%s颗#Y金丹 #G%s颗#Y银丹 #G%s颗#Y铜丹",玩家数据[i].角色.数据.名称,奖励数据[1],奖励数据[2],奖励数据[3]),频道="hd"})
        else
          if 商品存放[i] == nil then
            商品存放[i] = {[1]=奖励数据[1],[2]=奖励数据[2],[3]=奖励数据[3]}
          else
            商品存放[i] = {}
            商品存放[i][1] = 商品存放[i][1] + 奖励数据[1]
            商品存放[i][2] = 商品存放[i][2] + 奖励数据[2]
            商品存放[i][3] = 商品存放[i][3] + 奖励数据[3]
          end
        end
      end
    end
  end
  炼丹炉={}
  炼丹炉.时间 = 120
  for i,v in pairs(炼丹查看) do
    if 玩家数据[i] ~= nil then
      发送数据(玩家数据[i].连接id,108.1,{数据=炼丹炉[i],灵气=玩家数据[i].角色.数据.炼丹灵气})
    else
      炼丹查看[i] = nil
    end
  end
end

function 游戏活动类:取奖励(信息)
  local 数组 = {[1]=0,[2]=0,[3]=0}
  if math.floor(信息/1000) > 0 then
    数组[1] = math.floor(信息/1000)
    信息 = 信息 - 数组[1]*1000
    数组[2] = math.floor(信息/100)
    信息 = 信息 - 数组[2]*100
    数组[3] = math.floor(信息/10)
  elseif math.floor(信息/100) > 0 then
    数组[2] = math.floor(信息/100)
    信息 = 信息 - 数组[2]*100
    数组[3] = math.floor(信息/10)
  elseif math.floor(信息/10) > 0 then
    数组[3] = math.floor(信息/10)
  end
  return 数组[1],数组[2],数组[3]
end

function 游戏活动类:炼丹下注(内容)
  local 八卦 = {"乾","巽","坎","艮","坤","震","离","兑"}
  local id =内容.数字id
  local 序号 = 内容.编号
  local 数额 = 内容.数额

  if 炼丹炉.时间 <= 5 then
    常规提示(id,"#Y/即将开始炼丹,停止灌注灵气！")
    return
  elseif 炼丹炉.时间 >= 115 then
    常规提示(id,"#Y/炼丹才刚刚结束,请稍等再下注！")
    return
  elseif 玩家数据[id].角色.数据.炼丹灵气 < 数额 then
    常规提示(id,"#Y/你没有这么多的灵气用于灌注！")
    return
  elseif 数额 < 10 then
    常规提示(id,"#Y/炼丹炉单次灌注灵气不得少于10点！")
    return
  else
    if 炼丹炉[id] == nil then
      炼丹炉[id]={}
      炼丹炉[id][八卦[序号]] = 数额
    else
      if 炼丹炉[id][八卦[序号]] ~= nil then
        炼丹炉[id][八卦[序号]] = 炼丹炉[id][八卦[序号]] +数额
      else
        炼丹炉[id][八卦[序号]] = 数额
      end
    end
    玩家数据[id].角色.数据.炼丹灵气 = 玩家数据[id].角色.数据.炼丹灵气 - 数额
    常规提示(id,"#Y/灌注灵气成功,请等候丹炉炼丹吧！")
    发送数据(玩家数据[id].连接id,108.1,{数据=炼丹炉[id],灵气=玩家数据[id].角色.数据.炼丹灵气})
  end
end
function 游戏活动类:天梯竞技战斗处理(胜利id,失败id)
  --胜利单人开始
  if 玩家数据[胜利id].队伍==0 then
    天梯数据.玩家信息[胜利id].积分 =  天梯数据.玩家信息[胜利id].积分+10
    常规提示(胜利id,"你胜利了！获得10点积分")
    if 天梯数据.玩家信息[胜利id].积分<1100 then
      天梯数据.玩家信息[胜利id].段位进度=1
    elseif 天梯数据.玩家信息[胜利id].积分==1100 then
      天梯数据.玩家信息[胜利id].段位进度=2
    elseif 天梯数据.玩家信息[胜利id].积分==1200 then
      天梯数据.玩家信息[胜利id].段位进度=3
    elseif 天梯数据.玩家信息[胜利id].积分==1300 then
      天梯数据.玩家信息[胜利id].段位进度=4
    elseif 天梯数据.玩家信息[胜利id].积分==1400 then
      天梯数据.玩家信息[胜利id].段位进度=5
    elseif 天梯数据.玩家信息[胜利id].积分==1500 then
      天梯数据.玩家信息[胜利id].段位进度=6
    elseif 天梯数据.玩家信息[胜利id].积分==1600 then
      天梯数据.玩家信息[胜利id].段位进度=7
    elseif 天梯数据.玩家信息[胜利id].积分==1800 then
      天梯数据.玩家信息[胜利id].段位进度=8
    end
  --胜利单人结束
  else--胜利组队开始
    for n=1,#队伍数据[玩家数据[胜利id].队伍].成员数据 do
      if 队伍处理类:取是否助战(玩家数据[胜利id].队伍,n) == 0 then
        local 胜利组id = 队伍数据[玩家数据[胜利id].队伍].成员数据[n]
        天梯数据.玩家信息[胜利组id].积分 =  天梯数据.玩家信息[胜利组id].积分+10
        常规提示(胜利组id,"你胜利了！获得10点积分")
        if 天梯数据.玩家信息[胜利组id].积分<1100 then
          天梯数据.玩家信息[胜利组id].段位进度=1
        elseif 天梯数据.玩家信息[胜利组id].积分==1100 then
          天梯数据.玩家信息[胜利组id].段位进度=2
        elseif 天梯数据.玩家信息[胜利组id].积分==1200 then
          天梯数据.玩家信息[胜利组id].段位进度=3
        elseif 天梯数据.玩家信息[胜利组id].积分==1300 then
          天梯数据.玩家信息[胜利组id].段位进度=4
        elseif 天梯数据.玩家信息[胜利组id].积分==1400 then
          天梯数据.玩家信息[胜利组id].段位进度=5
        elseif 天梯数据.玩家信息[胜利组id].积分==1500 then
          天梯数据.玩家信息[胜利组id].段位进度=6
        elseif 天梯数据.玩家信息[胜利组id].积分==1600 then
          天梯数据.玩家信息[胜利组id].段位进度=7
        elseif 天梯数据.玩家信息[胜利组id].积分==1800 then
          天梯数据.玩家信息[胜利组id].段位进度=8
        end
      end
    end
  end--胜利组队结束
  --胜利结束
  --失败单人开始
  if 玩家数据[失败id].队伍==0 then
    天梯数据.玩家信息[失败id].积分 =  天梯数据.玩家信息[失败id].积分-10
    常规提示(失败id,"你战败了！扣除10点积分")
    if 天梯数据.玩家信息[失败id].积分<1100 then
      天梯数据.玩家信息[失败id].段位进度=1
    elseif 天梯数据.玩家信息[失败id].积分==1100 then
      天梯数据.玩家信息[失败id].段位进度=2
    elseif 天梯数据.玩家信息[失败id].积分==1200 then
      天梯数据.玩家信息[失败id].段位进度=3
    elseif 天梯数据.玩家信息[失败id].积分==1300 then
      天梯数据.玩家信息[失败id].段位进度=4
    elseif 天梯数据.玩家信息[失败id].积分==1400 then
      天梯数据.玩家信息[失败id].段位进度=5
    elseif 天梯数据.玩家信息[失败id].积分==1500 then
      天梯数据.玩家信息[失败id].段位进度=6
    elseif 天梯数据.玩家信息[失败id].积分==1600 then
      天梯数据.玩家信息[失败id].段位进度=7
    elseif 天梯数据.玩家信息[失败id].积分==1800 then
      天梯数据.玩家信息[失败id].段位进度=8
    end
  --失败单人结束
  else--失败组队开始
    for n=1,#队伍数据[玩家数据[失败id].队伍].成员数据 do
      if 队伍处理类:取是否助战(玩家数据[失败id].队伍,n) == 0 then
        local 失败组id = 队伍数据[玩家数据[失败id].队伍].成员数据[n]
        天梯数据.玩家信息[失败组id].积分 =  天梯数据.玩家信息[失败组id].积分-10
        常规提示(失败组id,"你们战败了！你被扣除10点积分")
        if 天梯数据.玩家信息[失败组id].积分<1100 then
          天梯数据.玩家信息[失败组id].段位进度=1
        elseif 天梯数据.玩家信息[失败组id].积分==1100 then
          天梯数据.玩家信息[失败组id].段位进度=2
        elseif 天梯数据.玩家信息[失败组id].积分==1200 then
          天梯数据.玩家信息[失败组id].段位进度=3
        elseif 天梯数据.玩家信息[失败组id].积分==1300 then
          天梯数据.玩家信息[失败组id].段位进度=4
        elseif 天梯数据.玩家信息[失败组id].积分==1400 then
          天梯数据.玩家信息[失败组id].段位进度=5
        elseif 天梯数据.玩家信息[失败组id].积分==1500 then
          天梯数据.玩家信息[失败组id].段位进度=6
        elseif 天梯数据.玩家信息[失败组id].积分==1600 then
          天梯数据.玩家信息[失败组id].段位进度=7
        elseif 天梯数据.玩家信息[失败组id].积分==1800 then
          天梯数据.玩家信息[失败组id].段位进度=8
        end
      end
    end
  end--失败组队结束
  --失败结束
end
function 游戏活动类:更新(dt)end
function 游戏活动类:显示(x,y)end

return 游戏活动类